//
//  HMSqliteManager.swift
//  01-FMDB演练
//
//  Created by itteacher on 2017/8/4.
//  Copyright © 2017年 itteacher. All rights reserved.
//

import UIKit
import FMDB
//  数据库路径
private  let DBPath = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as NSString).appendingPathComponent("SinaWeiBo.db")

//  数据库操作工具类
class HMSqliteManager: NSObject {
    //  数据库操作队列
    var queue: FMDatabaseQueue!
    //  单例的全局访问点
    static let sharedManager: HMSqliteManager = HMSqliteManager()
    
    //  构造函数私有化
    private override init() {
        super.init()
      
        print(DBPath)
        //  创建数据库或者打开数据库
        queue = FMDatabaseQueue(path: DBPath)
        //  创建表
        createTables()
    }
    
    //  创建表
    private func createTables() {
        //  获取db.sql文件路径
        let path = Bundle.main.path(forResource: "db.sql", ofType: nil)!
        //  获取文件内容
        let sql = try! String(contentsOfFile: path)
        //  执行sql
        queue.inDatabase { (db) in
            //  执行多条sql语句
            let result = db.executeStatements(sql)
            if result {
                print("创表成功")
            } else {
                print("创表失败")
            }
        }
    }
    
    //  根据sql查询语句获取字典数组
    func selectDicArray(sql: String) -> [[String: Any]] {
    
        var tempArray = [[String: Any]]()
        
        //  执行sql
        queue.inDatabase { (db) in
            if let resultSet = db.executeQuery(sql, withArgumentsIn: []) {
                //  遍历结果集
                while resultSet.next() {
                    //  获取到一条数据
                    //  创建字典
                    var dic = [String: Any]()
                    //  获取查询结果的列数
                    let colCount = resultSet.columnCount
                    //  遍历列数获取对应的列名和列值
                    for colIndex in 0..<colCount {
                        //  获取key
                        let key = resultSet.columnName(for: colIndex)!
                        //  获取value
                        let value = resultSet.object(forColumnIndex: colIndex)!
                        //  添加键值对
                        dic[key] = value
                    }
                    //  添加字典
                    tempArray.append(dic)
                }
            }
        }
        return tempArray
    }
 
    
    
    

}
